using Application.Abstractions.Messaging;
using Domain.Todos.Events;
using Microsoft.Extensions.Logging;

namespace Application.Todos.Complete;

/// <summary>
/// 待办事项完成事件处理器
/// </summary>
public sealed class TodoItemCompletedEventHandler(ILogger<TodoItemCompletedEventHandler> logger)
    : DomainEventHandler<TodoItemCompletedEvent>
{
    public override async ValueTask Handle(TodoItemCompletedEvent notification, CancellationToken cancellationToken = default)
    {
        logger.LogInformation(
            "用户 {UserId} 完成了待办事项: {Description} (完成时间: {CompletedAt})",
            notification.UserId,
            notification.Description,
            notification.CompletedAt);

        // 这里可以添加其他业务逻辑，比如：
        // - 计算完成统计
        // - 发送完成通知
        // - 更新用户积分
        // - 触发奖励机制

        await Task.CompletedTask;
    }
}
